
前一篇得到某友人回饋表示看完後對於Sentry和ELK的選擇上有困惑,感謝友人讓我今天有題目可以寫XD
Sentry是基於事件(Event)的監控平台。
Event不見得是錯誤,也有可能是一個Debug, Info level的事件。這得看開發者怎麼去規劃,哪些功能出錯該噴Error等級的Event,哪些噴Fatal,哪些噴Warning等等...
通常我們會將回報給Sentry的方法和系統上的Log放在一起,尤其是在Log.error(),Log.fatal()這種特別嚴重的狀況時。因此Client端在操作過程中觸發Log時,便會發送給Sentry。
並且通常來說,用戶在操作過程中遇到預料外的狀況,例如閃退、資料出不來等等,都會反射性地去重新嘗試。
因此一樣的Event會重複發送到Sentry,這時我們會將它們歸類成一則Issue。
ELK是由Elasticsearch、Logstash和Kibana三個服務字母開頭所組成。
Logstash 主要職責是抓取專案的Log同時會對Log做Formatted。抓取、篩選、輸出。Elasticsearch,甚至可以直接寫進DB。Elasticsearch 扮演著搜尋引擎的角色,它就是專注於把查詢功能做到最棒好。Logstash 把資料餵給Elasticsearch,因此能夠查詢的到Log。Kibana可以想像成是Elasticsearch的高級GUI介面。也可以理解成
Logstash過濾,Elasticsearch儲存,Kibana展示
Logstash也能做到的事,但他更輕量化,且不佔用系統資源。Beat,將資料吐給Reids,接著Logstash到Redis抓取到那些Client端Log。
看到這漸漸明白這兩者是沒辦法比較的,
一個是著重於搜集異常的事件,
一個是著重於盡可能搜集所有Log,並且歸類整理它。
要我舉例來說兩者的差別的話:
後面不贅述
後面不贅述
據我所知ELK和Sentry都有Send Alert功能,不過玩不夠透徹,不清楚ELK支援到多廣。
Sentry 帶給我更專心於Exception的資訊,一則Issue需要的資訊都歸類放好了,我能很專心的去思考。且會出現在上面的Issue,通常都是有問題該解決的。
ELK 則是把所有你想知道跟你不想知道的東西都給你了,它保證了我能獲得足夠的資訊,我能更清楚來龍去脈,只是要花時間查。